package com.sinodata.bsm.common.utils;

import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * Double处理的辅助类
 * @author huzhiyong
 *
 */
public class DoubleUtil {

    /**
     * Double格式化
     * @param a
     * @param b
     * @return
     */
    public static String getdivide(BigDecimal a, BigDecimal b) {
        BigDecimal b1 = new BigDecimal("0");
        if (b.equals(b1)) {
            return "0.00";
        } else {
            return a.divide(b, BigDecimal.ROUND_HALF_UP).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
        }
    }

    /**
     * Double计算
     * @param d
     * @param totalDigit
     * @param fractionalDigit
     * @return
     */
    public static String padDoubleLeft(Double d, int totalDigit, int fractionalDigit) {
        if (d == 0.0) {
            return d.toString();
        } else {
            String str = "";
            DecimalFormat decimalFormat = new DecimalFormat();
            decimalFormat.setMinimumFractionDigits(fractionalDigit);
            decimalFormat.setMaximumFractionDigits(fractionalDigit);
            decimalFormat.setGroupingUsed(false);
            decimalFormat.setMaximumIntegerDigits(totalDigit - fractionalDigit - 1);
            decimalFormat.setMinimumIntegerDigits(totalDigit - fractionalDigit - 1);
            str = decimalFormat.format(d);
            /**
             * 去掉前面的0（比如000123213，最后输出123213）
             */
            if (str.startsWith("-")) {
                str = str.substring(1);
                while (str.startsWith("0")) {
                    str = str.substring(1);
                }
                if (str.startsWith(".")) {
                    str = "0" + str;
                }
                str = "-" + str;
            } else {
                while (str.startsWith("0")) {
                    str = str.substring(1);
                }
                if (str.startsWith(".")) {
                    str = "0" + str;
                }
            }
            return str;
        }
    }

}
